package main

import "fmt"

func main() {
	c := make(chan int)
	done := make(chan bool)

	go func() {
		for i := 0; i < 10; i++ {
			//由于没有消费者 这里无法写入
			c <- i
		}
		//无法执行到此处
		done <- true
	}()

	go func() {
		for i := 10; i < 20; i++ {
			//由于没有消费者 这里无法写入
			c <- i
		}
		//无法执行到此处
		done <- true
	}()

	//这里阻塞后 c 没有消费者在取出, 导致 上面两个goroutine 阻塞死锁
	<-done
	<-done
	close(c)

	//执行不到这里
	for v := range c {
		fmt.Println(v)
	}

}
